package com.tff.gmall.manger.service.impl;

import com.alibaba.dubbo.config.annotation.Service;
import com.tff.gmall.beans.PmsBaseAttrInfo;
import com.tff.gmall.beans.PmsBaseAttrValue;
import com.tff.gmall.beans.PmsBaseSaleAttr;
import com.tff.gmall.manger.mapper.PmsBaseAttrInfoMapper;
import com.tff.gmall.manger.mapper.PmsBaseAttrValueMapper;
import com.tff.gmall.manger.mapper.PmsBaseSaleAttrMapper;
import com.tff.gmall.service.PmsBaseAttrInfoService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.ArrayList;
import java.util.List;

@Service
public class PmsBaseAttrInfoServiceImpl implements PmsBaseAttrInfoService {

    @Autowired
    private PmsBaseAttrInfoMapper attrInfoMapper;
    @Autowired
    private PmsBaseAttrValueMapper attrValueMapper;
    @Autowired
    private PmsBaseSaleAttrMapper baseSaleAttrMapper;

    @Override
    public List<PmsBaseAttrInfo> attrInfoList(String catalog3Id) {

        List<PmsBaseAttrInfo> pmsBaseAttrInfoList = new ArrayList<>();
        List<PmsBaseAttrInfo> pmsBaseAttrInfos = attrInfoMapper.attrInfoList(catalog3Id);
        for (PmsBaseAttrInfo info : pmsBaseAttrInfos) {
            List<PmsBaseAttrValue> pmsBaseAttrValues = attrValueMapper.getPmsBaseAttrInfoByAttrId(info.getId());

            info.setAttrValueList(pmsBaseAttrValues);
            pmsBaseAttrInfoList.add(info);
        }
        return pmsBaseAttrInfoList;
    }

    /***
     * 平台属性及属性值的保存
     * @param pmsBaseAttrInfo
     * @return
     */
    @Override
    public Boolean saveAttrInfo(PmsBaseAttrInfo pmsBaseAttrInfo) {
        //根据id区分是修改还是新增
        if (StringUtils.isBlank(pmsBaseAttrInfo.getId())) {
            //新增操作
            //保存平台属性
            Integer integer = attrInfoMapper.savePmsBaseAttrInfo(pmsBaseAttrInfo);
            List<PmsBaseAttrValue> attrValueList = pmsBaseAttrInfo.getAttrValueList();
            for (PmsBaseAttrValue pmsBaseAttrValue : attrValueList) {
                pmsBaseAttrValue.setAttrId(pmsBaseAttrInfo.getId());
                Integer integer1 = attrValueMapper.insertPmsBaseAttrValue(pmsBaseAttrValue);
            }
        } else {
            //修改操作(删除原来的 直接插入)
            //修改平台属性
            Integer integer = attrInfoMapper.updatePmsBaseAttrInfo(pmsBaseAttrInfo);
            //查看原来平台属性值是否存在，是就删除
            List<PmsBaseAttrValue> pmsBaseAttrValues = attrValueMapper.getPmsBaseAttrInfoByAttrId(pmsBaseAttrInfo.getId());
            if (pmsBaseAttrValues.size() > 0) {
                Integer integer1 = attrValueMapper.deletePmsBaseAttrValueByAttrId(pmsBaseAttrInfo.getId());
                System.out.println("删除sucess" + integer1);
            }
            //获取修改后的平台属性值进行保存
            List<PmsBaseAttrValue> pmsBaseAttrValueList = pmsBaseAttrInfo.getAttrValueList();
            for (PmsBaseAttrValue pms : pmsBaseAttrValueList) {
                pms.setAttrId(pmsBaseAttrInfo.getId());
                attrValueMapper.insertPmsBaseAttrValue(pms);
                System.out.println("修改属性保存成功");
            }

        }
        return true;
    }

    @Override
    public List<PmsBaseAttrValue> getPmsBaseAttrInfoByAttrid(String attrId) {

        return attrValueMapper.getPmsBaseAttrInfoByAttrId(attrId);
    }

    @Override
    public List<PmsBaseSaleAttr> baseSaleAttrListService() {

        return baseSaleAttrMapper.baseSaleAttrListMapper();
    }

    @Override
    public List<PmsBaseAttrInfo> getPmsBaseAttrInfoByValueId(String attrValueList) {

        return attrInfoMapper.selectPmsBaseAttrInfoByValueId(attrValueList);
    }


}
